桔妹导读:近年来,因果推断逐渐成为了机器学习中的热点话题。增益模型(Uplift Model)作为工业界因果推断与机器学习结合最成熟的算法之一,在智能营销中有着广泛的应用。目前大多数增益模型仅讨论了二元处理变量情况下的处理效应估计,然而在网约车市场中存在大量多维、连续的处理变量。针对这一困境,我们构造了连续因果森林模型,并成功地应用在了网约车交易市场策略上。
在网约车供需策略技术基础能力团队,我们最关注的工作之一就是量化价格对网约车供需关系的影响。这对于精细化定价补贴策略的制定和优化有着重要的意义。在业界,我们称针对某个处理变量(Treatment),衡量其处理效应(Treatment Effect)的一类模型为增益模型(Uplift Modeling)。与传统的监督学习模型关注于准确估计响应变量(Y)不同, 增益模型专注于估计处理变量(W)对响应变量(Y)的影响。因此这类问题通常被放在因果推断(Causal Inference)的框架下进行讨论。目前市面上大多数流行的增益模型框架(如CausalML, pylift, grf),都很好地支持了二元处理变量(如发券或不发券,吃药或不吃药)的效应估计。但在多元/连续处理变量方面,尚未有很好的支持。然而,在广大的应用场景中,多元或连续的处理变量更为普遍。例如,价格就是一个连续变量,存在理论上无限多的可能值。当我们希望估计各个价格点对供需关系的影响的时候,二元处理效应模型的局限性就显露了出来。针对这种困境,我们开始思考是否可以在因果推断的框架下实现对多元或连续处理变量的效应估计。经过一段时间的开发和测试,在二元因果森林的基础上,我们扩展研发了连续因果森林,初步解决了部分场景下连续变量处理效应的估计问题。本文主要介绍连续因果森林模型的构建原理及应用,希望对大家在处理相关问题时有所启发和帮助。因果森林(Causal Forest)是由Susan Athey、Stefan Wager等人开发,专门估计异质处理效应的机器学习模型,是当前增益模型领域最为流行的算法之一。目前,官方有基于C++/R语言的算法实现(https://grf-labs.github.io/grf)。
与其他增益树模型(Tree-based Uplift Model)类似,因果森林以随机森林为基础,通过对特征空间进行重复划分(Recursive Partitioning),以达到局部特征空间的数据同质/无混淆。在一定的假设下[1],我们就可以得到各个维度上异质处理效应(Heterogeneous Treatment Effect)的无偏估计。
其中
我们称为条件平均处理效应(Conditional Average Treatment Effect)。这里的条件是指,给定局部特征空间下的平均处理效应。下图简略展示了二元因果森林中某一颗决策树的生成逻辑。
即我们希望从协变量中,找到一个最优分裂节点,最大化子节点间处理效应差异。在节点内,我们认为所有样本同质,因此可以应用公式(1)进行处理效应的计算。如此重复分裂,直到满足一些预设的停止条件(节点最小样本值、处理变量不平衡度、最小信息增益等),完成一棵树的构造。不失一般性,我们设多元处理变量W为W=0,1,...,k,其中0为参照(Control)处理值,其余处理值为对照(Treated)处理值。
从上述定义中我们不难发现,对于某个对照处理值,实际上我们仍然还是在计算二元处理变量(i和1)的处理效应。这样,通过上述的简单改造,我们就可以基于现有的二元处理效应模型,实现多元处理效应的估计。优点
缺点
- 当处理变量值较多时,会产生大量模型,增加训练和部署成本;
- 数据利用不充分,单个模型只用到部分(2/(k+1))数据;
- 不同处理效应间无关联。这在部分场景中并不合理,例如我们认为价格和供需存在单调关系;
无法对未出现在数据集中的对照变量值进行推断。
在定价策略中,所有的模型归根结底都在拟合价格曲线。在需求侧,我们可以合理假设价格曲线具有如下特征:单调性:价格越高,需求越低 ;
局部线性:在局部价格区间内,价格与需求呈线性关系。
树模型的一个优点在于,在节点内部我们可以自定义统计量的计算方式。
利用价格需求曲线的特性,我们对节点内的样本(W1,Y1),(W2,Y2),...进行线性回归,然后以线性回归得到的斜率代表连续处理效应。基于这个想法,在ATE的基础上,我们定义平均偏效应(Average Partial Effect)为我们可以证明(https://z.didi.cn/CAPE),上述公式等价于Y对W和做简单线性回归后得到的斜率系数。通过将CAPE代替CATE作为节点统计值用作树分裂,我们就实现了通过单一模型估计多元/连续处理效应。在模型的预估/推断阶段,为了跳脱出线性假设的约束, 在估计各个对照处理效应的时候,我们退回之前的定义,仅选取对应的对照/参照变量值样本计算对应的处理效应。因此在我们的连续因果森林模型中,整体的CAPE仅被用作分裂,不会用于效应估计。优点:
考虑了不同处理效应间的关系
充分利用数据,不同处理变量间可以互相学习
单一模型,减少训练/部署成本
缺点:
使用中需考察线性假设的合理性
在离线指标上,我们选择了Qini Score作为评估标准,分别比较多重二元因果森林模型和连续因果森林模型的效果。
基于此,我们上线了基于连续因果森林的定价策略。经过多周的在线AB实验后,取得了15%+的ROI收益。目前连续因果森林已作为智能主策略覆盖了全国大部分城市。基于一个新的指标(CAPE),我们构造了连续因果森林,成功地将多元/连续处理效应纳入单一模型进行估计,并取得了显著的离线和在线结果。目前连续因果森林仍处于早期的开发阶段,存在大量的优化空间。例如:
可否使用非线性假设
如何处理无单调关系的处理变量(如不同套餐)
- 如何估计多维处理效应(如多个产品线价格间的相互影响)
其中的部分问题,我们在一些离线实验上已有令人期待的结果。期望在不久的将来能够与大家分享。[1] 常见的假设为: Unconfoundedness, Exchangeability, Positivity[2] 为了方便说明,我们省略了local centering的处理。[1] Susan Athey and Stefan Wager. Estimating Treatment Effects with Causal Forests: An Application. Observational Studies, 5, 2019.
[2] Susan Athey, Julie Tibshirani and Stefan Wager. Generalized Random Forests. Annals of Statistics, 47(2), 2019.
团队招聘
▬
滴滴网约车MPT团队致力于打造世界顶尖的智能交易平台,包括订单分配,司机调度,拼车,定价,补贴等方向,通过不断探索机器学习、强化学习等前沿技术,完善交易市场设计,实现资源最优化分配,力求解决正在发生的以及潜在供需失衡的状况,最大程度满足平台多样化的出行需求,持续优化乘客体验和保障司机收入,提升业务经营效率,引领出行行业变革与发展。
MPT长期招聘算法、工程(C++、Go)等职位,欢迎有兴趣的小伙伴加入,可投递简历至 diditech@didiglobal.com,邮件请邮件主题请命名为「姓名-投递岗位-投递团队」。
扫码了解更多岗位
联系我们 | DiDiTech@didiglobal.com